package cn.shiwei.basic.controller;

import cn.shiwei.basic.util.FastDfsUtil;
import cn.shiwei.basic.util.RequestStatus;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@RestController
@RequestMapping("/fastDfs")
@Api(tags = "文件上传接口",description = "文件上传接口详细描述")
public class FastDfsController {

    /**
     * required = true 表示必须有参数,
     * value = "file" 表示用file这个变量名去接收
     * @RequestPart 这个注解表示位支持复杂表单项, 提交, 获取其对象
     * @param file
     * @return
     */
    @PostMapping()
    private RequestStatus fileUpLoad(@RequestPart(required = true,value = "file") MultipartFile file) throws IOException {
        try {
            // 获取文件的原始名字
            String filename = file.getOriginalFilename();
            // 获取后缀
            String suffix = filename.substring(filename.lastIndexOf(".") + 1);
            // 上传文件
            String filePath = FastDfsUtil.upload(file.getBytes(), suffix);
            // 返回信息提示信息
            return RequestStatus.me().setResultObj(filePath);
        } catch (IOException e) {
            e.printStackTrace();
            return RequestStatus.me().setMessage("系统异常");
        }
    }

    /**
     * required = true 表示这项复杂表单必须有参数
     * @param path
     * @return
     */
    @DeleteMapping
    private RequestStatus ddeleteFile(@RequestParam(required = true,value = "path") String path){
        try {
            // 去掉组名前的"/"
            path = path.substring(1);
            // 获取组名
            String group = path.substring(0, path.indexOf("/"));
            // 获取文件路径
            String fileName = path.substring(path.indexOf("/") + 1);
            System.out.println(group);
            System.out.println(fileName);
            // 删除
            FastDfsUtil.delete(group,fileName);
            return RequestStatus.me();
        } catch (Exception e) {
            e.printStackTrace();
            return RequestStatus.me().setMessage("系统移除, 删除失败");
        }
    }
}
